package com.easystudy.controller;

import java.security.Principal;

import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**@文件名称: TestController.java
 * @功能描述: TODO(用一句话描述该文件做什么)
 * @版权信息： www.easystudy.com
 * @技术交流： 961179337(QQ群)
 * @编写作者： lixx2048@163.com
 * @联系方式： 941415509(QQ)
 * @开发日期： 2020年7月27日
 * @历史版本： V1.0  
 */
@RestController
@RequestMapping("/test")
@Api(value = "OAuth2 Client测试接口文档", tags = "OAuth2 Client测试接口文档")
public class TestController {
	
	// oauth2注解
	/**
	 * @RequiresUser:subject.isRemembered()结果为true,subject.isAuthenticated() 
	 * @RequiresAuthentication:同于方法subject.isAuthenticated() 结果为true时
	 * @RequiresGuest:与@RequiresUser完全相反。
	 * @RequiresRoles("xx");有xx角色才可以访问方法
	 * @RequiresPermissions({"file:read", "write:aFile.txt"} ):同时含有file:read和write:aFile.txt的权限才能执行方法
	 */
	@GetMapping("/hi")
	@ApiOperation(value="打招呼1", notes="打招呼1")
	@ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "name", value = "名称", required = true) })
	public String hi(@RequestParam(name = "name", required = true) String name){
		return "B系统：hi," + name;
	}
	
	/**
	 * @功能描述: 获取用户认证信息（已登录用户）
	 * @技术交流： 961179337(QQ群)
	 * @编写作者： lixx2048@163.com
	 * @联系方式： 941415509(QQ)
	 * @开发日期： 2020年7月31日
	 */
	@GetMapping("/info")
    public Principal info(Principal principal) {
        return principal;
    }
	
	@GetMapping("/me")
	//@PreAuthorize("hasAuthority('member:save')")
    public Authentication me(Authentication authentication) {
        return authentication;
    }
}
